package com.itxiuyixiu.entity.mapper;

import com.itxiuyixiu.entity.model.EnterList;
import com.itxiuyixiu.entity.model.EnterListView;

import java.util.List;
import java.util.Optional;

/**
 * @author 黄磊
 * @date 2020/5/4
 */
public interface EnterListReaderMapper {
    /**
     * 根据活动id查询所有的参与者
     *
     * @param activityId 活动id
     * @return 所有的参与者
     */
    List<EnterList> findAllEnterListByActivityId(Integer activityId);

    /**
     * 根据学生表的sId查询所有的参与者
     *
     * @param sId 学生表主键
     * @return 所有的参与者
     */
    List<EnterList> findAllEnterListBySId(String sId);

    /**
     * 查询某一个活动的某一位参与者的详情
     *
     * @param activityId 活动id
     * @param sId 学生表主键
     * @return 参与详情
     */
    Optional<EnterList> findEnterListByActivityIdAndSId(Integer activityId, Integer sId);

    /**
     * 参训某一参与者信息
     *
     * @param enterId 参与者表的主键
     * @return 参与者信息
     */
    Optional<EnterList> findEnterListById(Integer enterId);

    /**
     * 查询用户是否已经参加了活动
     *
     * @return true - 已经参加了活动，false-没有参加活动
     */
    boolean isStudentEnteredActivity(int activityId , int sId);

    /**
     * 查询活动的现在报名人数
     *
     * @param activityId 活动报名人数
     * @return 现在报名的人数
     */
    int findActivityNowNumber(int activityId);

    /**
     * 视图
     * 根据活动id查询所有的参与者
     *
     * @param activityId 活动id
     * @return 所有的参与者
     */
    List<EnterListView> findAllEnterListViewByActivityId(Integer activityId);

    /**
     * 视图
     * 根据学生表的sId查询所有的参与者
     *
     * @param sId 学生表主键
     * @return 所有的参与者
     */
    List<EnterListView> findAllEnterListViewBySId(Integer sId);

    /**
     * 查询某一个活动的某一位参与者的详情
     *
     * @param activityId 活动id
     * @param sId 学生表主键
     * @return 参与详情
     */
    Optional<EnterListView> findEnterListViewByActivityIdAndSId(Integer activityId, String sId);

    /**
     * 查询某一参与者信息
     *
     * @param enterId 参与者表的主键
     * @return 参与者信息
     */
    Optional<EnterListView> findEnterListViewById(Integer enterId);
}
